package org.xw.controller;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.xw.dto.ManagerCheckDto;
import org.xw.dto.UserDto;
import org.xw.pojo.ManagerCheckPojo;
import org.xw.pojo.UserPojo;
import org.xw.service.ManagerService;
import org.xw.utils.ResponseUtil;

import java.util.HashMap;
import java.util.List;

@RestController
@RequestMapping("/manager")
public class ManagerController {
    @Autowired
    ManagerService service;

    /**
     * 注册  用户传入电话号码phone和密码password，进行注册
     *
     * @param user 电话号码phone和密码password
     * @return 成功与否
     */
    @PostMapping("/sign")
    public ResponseUtil signManager(@RequestBody UserPojo user) {
        Integer result = service.signManager(user);
        if (result == 1) {
            return ResponseUtil.success("注册成功");
        } else if (result == 2) {
            return ResponseUtil.error("注册失败,服务器内部错误!");
        } else
            return ResponseUtil.error("该账户已经注册过了，如有需要请找回密码。");
    }

    /**
     * 登录  管理员传入电话号码以及密码进行登录
     *
     * @param phone
     * @param password
     * @return
     */
    @GetMapping("/login")
    public ResponseUtil loginManager(String phone, String password) {
        HashMap hashMap = service.managerLogin(phone, password);
        if (hashMap.isEmpty()) {
            return ResponseUtil.error("该号码还未注册，请前往注册");
        } else if (!hashMap.isEmpty()) {
            return ResponseUtil.success(hashMap);
        } else return ResponseUtil.error("密码错误");
    }

    /**
     * 头像审核 传入审核对象，包含用户id userId，审核内容 checkContent，审核员 operate_manager，是否同意申请 is_approve，操作时间 operate_time
     * 同意后 将审核内容 checkContent更新到对应申请用户的头像位置
     *
     * @param managerCheck
     * @param request
     * @return
     */
    @PostMapping("/operate")
    public ResponseUtil operateChangeHeadImageRequest(@RequestBody ManagerCheckPojo managerCheck, HttpServletRequest request) {
        Integer integer = service.agreeChangeHeadImage(managerCheck, request);
        if (integer == 1) {
            return ResponseUtil.success("审核操作成功");
        } else if (integer == 2) {
            return ResponseUtil.error("审核操作失败");
        } else return ResponseUtil.error("未登录，不可操作");
    }


    /**
     * 封禁用户  传入用户信息，将该用户封禁或者解禁
     *
     * @param user
     * @return
     */
    @PutMapping("/ban")
    public ResponseUtil isBanUser(@RequestBody UserDto user) {
        Boolean result = service.isBanUser(user);
        if (result) {
            return ResponseUtil.success(true);
        } else return ResponseUtil.error("操作失败，请重新操作!若多次操作无果请联系程序员");
    }

    /**
     * 获取所有审核请求
     *
     * @param checkType 审核类型 0：查所有，1,2,3。。。：查询对应类型审核请求
     * @return 响应结果
     */
    @GetMapping("/{checkType}")
    public ResponseUtil checkList(@PathVariable("checkType") Integer checkType) {
        List<ManagerCheckDto> managerChecks = service.checkList(checkType);
        if (!managerChecks.isEmpty()) {
            return ResponseUtil.success(managerChecks);
        } else return ResponseUtil.error("未查询到数据！");
    }
}
